--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / js / MicronParser.js
Displaying Raw • Download
meshchatx/src/frontend/js/MicronParser.js e0f1f99cd1c208c5008a936230c38e448dddd45d (e0f1f99c) Text, 25.77 KB
Tff7b72import Te6edf3DOMPurify Tff7b72from Ta5d6ff"dompurify"Tb4b4b4;
Tff7b72import Te6edf3BaseMicronParser Tff7b72from Ta5d6ff"micron-parser"Tb4b4b4;
Tff7b72const Te6edf3ALLOWED_URI_REGEXP Tff7b72=
Ta5d6ff/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|nomadnetwork|lxmf):|[^a-z]|[a-z+.-]+(?:[^a-z+.-:]|$))/iTb4b4b4;
Tff7b72function Te6edf3escapeHtmlForFallbackTb4b4b4(Te6edf3textTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3text Tff7b72== Tff7b72nullTb4b4b4) Tff7b72return Ta5d6ff""Tb4b4b4;
Tff7b72return Tffa657StringTb4b4b4(Te6edf3textTb4b4b4)
Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/&/gTb4b4b4, Ta5d6ff"&"Tb4b4b4)
Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/</gTb4b4b4, Ta5d6ff"<"Tb4b4b4)
Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/>/gTb4b4b4, Ta5d6ff">"Tb4b4b4)
Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/"/gTb4b4b4, Ta5d6ff"""Tb4b4b4)
Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/'/gTb4b4b4, Ta5d6ff"'"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e/**
* Extends the published micron-parser with MeshChat / Nomad Network needs:
* partial includes, overlay style stripping, wide CJK monospace cells, and lxmf/nomadnetwork in DOMPurify.
*/
Tff7b72export Tff7b72default Tff7b72class Te6edf3MicronParser Tff7b72extends Te6edf3BaseMicronParser Tb4b4b4{
Tff7b72constructorTb4b4b4(Te6edf3darkTheme Tff7b72= Tff7b72trueTb4b4b4, Te6edf3enableForceMonospace Tff7b72= Tff7b72trueTb4b4b4) Tb4b4b4{
Tff7b72superTb4b4b4(Te6edf3darkThemeTb4b4b4, Te6edf3enableForceMonospaceTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3enableForceMonospaceTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3existing Tff7b72= Tffa657documentTb4b4b4.Te6edf3getElementByIdTb4b4b4(Ta5d6ff"micron-monospace-styles"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3existingTb4b4b4) Tb4b4b4{
Te6edf3existingTb4b4b4.Te6edf3removeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3injectMonospaceStylesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72static Te6edf3get Te6edf3PARTIAL_LINE_REGEXTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// eslint-disable-next-line security/detect-unsafe-regex -- fixed pattern, bounded input (single line)
Tff7b72return Ta5d6ff/^`\{([a-f0-9]{32}):([^`}]*)(?:`(\d+)(?:`([^}]*))?)?\}$/Tb4b4b4;
Tb4b4b4}
Tff7b72static Te6edf3isWideMonospaceCellTb4b4b4(Te6edf3segmentTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3segmentTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(
Ta5d6ff/\p{Script=Han}|\p{Script=Hiragana}|\p{Script=Katakana}|\p{Script=Hangul}|\p{Script=Bopomofo}/uTb4b4b4.Te6edf3testTb4b4b4(
Te6edf3segment
Tb4b4b4)
Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3cp Tff7b72= Te6edf3segmentTb4b4b4.Te6edf3codePointAtTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3cp Tff7b72>= T79c0ff0x3000 Tff7b72&& Te6edf3cp Tff7b72<= T79c0ff0x303fTb4b4b4) Tff7b72return Tff7b72trueTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3cp Tff7b72>= T79c0ff0xff01 Tff7b72&& Te6edf3cp Tff7b72<= T79c0ff0xff5eTb4b4b4) Tff7b72return Tff7b72trueTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3cp Tff7b72>= T79c0ff0xffe0 Tff7b72&& Te6edf3cp Tff7b72<= T79c0ff0xffe6Tb4b4b4) Tff7b72return Tff7b72trueTb4b4b4;
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
T8b949e/**
* When false, forceMonospace can render a whole word in one span (Latin/Cyrillic/etc.),
* avoiding one DOM node per character (critical for large pages and resize performance).
*/
Tff7b72static Te6edf3lineNeedsPerCharCellsTb4b4b4(Te6edf3lineTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3lineTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72for Tb4b4b4(Tff7b72const Tff7b72char Tff7b72of Te6edf3lineTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3isWideMonospaceCellTb4b4b4(Tff7b72charTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3cp Tff7b72= Tff7b72charTb4b4b4.Te6edf3codePointAtTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3cp Tff7b72>= T79c0ff0x2500 Tff7b72&& Te6edf3cp Tff7b72<= T79c0ff0x257fTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3cp Tff7b72>= T79c0ff0x2580 Tff7b72&& Te6edf3cp Tff7b72<= T79c0ff0x259fTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72static Te6edf3stripOverlayStylesTb4b4b4(Te6edf3htmlTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3html Tff7b72!== Ta5d6ff"string"Tb4b4b4) Tff7b72return Te6edf3htmlTb4b4b4;
Tff7b72const Te6edf3dangerousProps Tff7b72= Tb4b4b4[Ta5d6ff"zindex"Tb4b4b4, Ta5d6ff"inset"Tb4b4b4, Ta5d6ff"top"Tb4b4b4, Ta5d6ff"left"Tb4b4b4, Ta5d6ff"right"Tb4b4b4, Ta5d6ff"bottom"Tb4b4b4, Ta5d6ff"transform"Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3scrubStyleValue Tff7b72= Tb4b4b4(Te6edf3styleValueTb4b4b4) Tb4b4b4=> Tb4b4b4{
T8b949e// Strip CSS comments so position/**/:fixed cannot hide the colon.
Tff7b72let Te6edf3cleaned Tff7b72= Tffa657StringTb4b4b4(Te6edf3styleValueTb4b4b4)Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/\/\*[\s\S]*?\*\//gTb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4;
T8b949e// Unescape simple CSS hex escapes (fixe\64 => fixed) used to hide overlays.
Te6edf3cleaned Tff7b72= Te6edf3cleanedTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/\\([0-9a-fA-F]{1,6})\s?/gTb4b4b4, Tb4b4b4(Te6edf3_Tb4b4b4, Te6edf3hexTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72return Tffa657StringTb4b4b4.Te6edf3fromCodePointTb4b4b4(Tffa657parseIntTb4b4b4(Te6edf3hexTb4b4b4, T79c0ff16Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3cleaned Tff7b72= Te6edf3cleanedTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/\\(.)/gTb4b4b4, Ta5d6ff"$1"Tb4b4b4)Tb4b4b4;
T8b949e// Drop format/bidi noise so fi\u200Bxed / soft-hyphen cannot hide overlays.
Te6edf3cleaned Tff7b72= Te6edf3cleanedTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/[\u00AD\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\uFEFF]/gTb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3declarations Tff7b72= Te6edf3cleanedTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff";"Tb4b4b4)Tb4b4b4.Te6edf3filterTb4b4b4(Tffa657BooleanTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3safe Tff7b72= Te6edf3declarationsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3declTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3colon Tff7b72= Te6edf3declTb4b4b4.Te6edf3indexOfTb4b4b4(Ta5d6ff":"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3colon Tff7b72<= T79c0ff0Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72const Te6edf3rawProp Tff7b72= Te6edf3declTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3colonTb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3prop Tff7b72= Te6edf3rawPropTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/-/gTb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/\s+/gTb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4;
T8b949e// Drop !important so "fixed !important" still matches fixed/sticky.
Tff7b72const Te6edf3val Tff7b72= Te6edf3decl
Tb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3colon Tff7b72+ T79c0ff1Tb4b4b4)
Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/!important/gTb4b4b4, Ta5d6ff""Tb4b4b4)
Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/\s+/gTb4b4b4, Ta5d6ff""Tb4b4b4)
Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(
Te6edf3prop Tff7b72=== Ta5d6ff"position" Tff7b72&&
Tb4b4b4(Ta5d6ff/\bfixed\b/Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3valTb4b4b4) Tff7b72|| Ta5d6ff/\bsticky\b/Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3valTb4b4b4) Tff7b72|| Ta5d6ff/\babsolute\b/Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3valTb4b4b4)Tb4b4b4)
Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3dangerousPropsTb4b4b4.Te6edf3includesTb4b4b4(Te6edf3propTb4b4b4)Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3prop Tff7b72=== Ta5d6ff"width" Tff7b72&& Tb4b4b4(Ta5d6ff/100v[wh]/Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3valTb4b4b4) Tff7b72|| Ta5d6ff/^100%$/Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3valTb4b4b4)Tb4b4b4)Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3prop Tff7b72=== Ta5d6ff"height" Tff7b72&& Tb4b4b4(Ta5d6ff/100v[hw]/Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3valTb4b4b4) Tff7b72|| Ta5d6ff/^100%$/Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3valTb4b4b4)Tb4b4b4)Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
T8b949e// Block clearnet / protocol-relative url() and @import in inline styles.
Tff7b72if Tb4b4b4(Ta5d6ff/url\s*\(\s*["']?(?:https?:|\/\/)/iTb4b4b4.Te6edf3testTb4b4b4(Te6edf3declTb4b4b4)Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Ta5d6ff/@import/iTb4b4b4.Te6edf3testTb4b4b4(Te6edf3declTb4b4b4)Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Ta5d6ff/expression\s*\(/iTb4b4b4.Te6edf3testTb4b4b4(Te6edf3declTb4b4b4)Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Ta5d6ff/javascript\s*:/iTb4b4b4.Te6edf3testTb4b4b4(Te6edf3declTb4b4b4)Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3safeTb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff"; "Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Tff7b72let Te6edf3out Tff7b72= Te6edf3htmlTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/(\s)style="([^"]*)"/giTb4b4b4, Tb4b4b4(Te6edf3matchTb4b4b4, Te6edf3spaceTb4b4b4, Te6edf3styleValueTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3scrubbed Tff7b72= Te6edf3scrubStyleValueTb4b4b4(Te6edf3styleValueTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3scrubbed Tff7b72? Ta5d6ff`Tffd700${Te6edf3spaceTffd700}Ta5d6ffstyle="Tffd700${Te6edf3scrubbedTffd700}Ta5d6ff"Ta5d6ff` Tff7b72: Ta5d6ff""Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3out Tff7b72= Te6edf3outTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/(\s)style='([^']*)'/giTb4b4b4, Tb4b4b4(Te6edf3matchTb4b4b4, Te6edf3spaceTb4b4b4, Te6edf3styleValueTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3scrubbed Tff7b72= Te6edf3scrubStyleValueTb4b4b4(Te6edf3styleValueTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3scrubbed Tff7b72? Ta5d6ff`Tffd700${Te6edf3spaceTffd700}Ta5d6ffstyle="Tffd700${Te6edf3scrubbedTffd700}Ta5d6ff"Ta5d6ff` Tff7b72: Ta5d6ff""Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3outTb4b4b4;
Tb4b4b4}
T8b949e/**
* Scrub network CSS from style tag bodies (WASM micron path).
* Kept local to avoid a circular import with NomadPageRenderer.
*/
Tff7b72static Te6edf3scrubNetworkCssTb4b4b4(Te6edf3cssTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3cssTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3s Tff7b72= Tffa657StringTb4b4b4(Te6edf3cssTb4b4b4)Tb4b4b4;
Te6edf3s Tff7b72= Te6edf3sTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/@import\s+[^;]+;/giTb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4;
Te6edf3s Tff7b72= Te6edf3sTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/@import\s+url\s*\([^)]+\)\s*;?/giTb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4;
Te6edf3s Tff7b72= Te6edf3sTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/expression\s*\(/giTb4b4b4, Ta5d6ff"blocked("Tb4b4b4)Tb4b4b4;
Te6edf3s Tff7b72= Te6edf3sTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/javascript\s*:/giTb4b4b4, Ta5d6ff"blocked:"Tb4b4b4)Tb4b4b4;
Te6edf3s Tff7b72= Te6edf3sTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/-moz-binding/giTb4b4b4, Ta5d6ff"blocked-binding"Tb4b4b4)Tb4b4b4;
Te6edf3s Tff7b72= Te6edf3sTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/url\s*\(\s*["']?(?:https?:|\/\/)/giTb4b4b4, Ta5d6ff"url(blocked:"Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3sTb4b4b4;
Tb4b4b4}
Tff7b72static Te6edf3sanitizeRenderedMicronHtmlTb4b4b4(Te6edf3htmlTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3html Tff7b72== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3s Tff7b72= Tff7b72typeof Te6edf3html Tff7b72=== Ta5d6ff"string" Tff7b72? Te6edf3html Tff7b72: Tffa657StringTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72let Te6edf3sanitized Tff7b72= Te6edf3DOMPurifyTb4b4b4.Te6edf3sanitizeTb4b4b4(Te6edf3sTb4b4b4, Tb4b4b4{
Te6edf3USE_PROFILESTff7b72: Tb4b4b4{ Te6edf3htmlTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4,
Te6edf3ALLOWED_URI_REGEXPTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72try Tb4b4b4{
Te6edf3sanitized Tff7b72= Te6edf3MicronParserTb4b4b4.Te6edf3stripOverlayStylesTb4b4b4(Te6edf3sanitizedTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3warnTb4b4b4(Ta5d6ff"MicronParser: stripOverlayStyles failed"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Te6edf3sanitized Tff7b72= Te6edf3MicronParserTb4b4b4.Te6edf3scrubNetworkCssInStyleTagsTb4b4b4(Te6edf3sanitizedTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3warnTb4b4b4(Ta5d6ff"MicronParser: scrubNetworkCss failed"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3sanitizedTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3errorTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3warnTb4b4b4(
Ta5d6ff"DOMPurify is not installed or sanitization failed. Include dompurify or check the build."Tb4b4b4,
Te6edf3error
Tb4b4b4)Tb4b4b4;
Tff7b72return Ta5d6ff`Ta5d6ff<p style="color: red;">DOMPurify is not installed or sanitization failed.</p>Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
T8b949e/**
* Scrub network CSS inside <style> blocks without nested regex backtracking.
*/
Tff7b72static Te6edf3scrubNetworkCssInStyleTagsTb4b4b4(Te6edf3htmlTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3html Tff7b72!== Ta5d6ff"string" Tff7b72|| Tff7b72!Te6edf3htmlTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3html Tff7b72== Tff7b72null Tff7b72? Ta5d6ff"" Tff7b72: Te6edf3htmlTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3lower Tff7b72= Te6edf3htmlTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3out Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72while Tb4b4b4(Te6edf3i Tff7b72< Te6edf3htmlTb4b4b4.Te6edf3lengthTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3openIdx Tff7b72= Te6edf3lowerTb4b4b4.Te6edf3indexOfTb4b4b4(Ta5d6ff"<style"Tb4b4b4, Te6edf3iTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3openIdx Tff7b72< T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3out Tff7b72+= Te6edf3htmlTb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3iTb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3tagEnd Tff7b72= Te6edf3htmlTb4b4b4.Te6edf3indexOfTb4b4b4(Ta5d6ff">"Tb4b4b4, Te6edf3openIdxTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3tagEnd Tff7b72< T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3out Tff7b72+= Te6edf3htmlTb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3iTb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3closeIdx Tff7b72= Te6edf3lowerTb4b4b4.Te6edf3indexOfTb4b4b4(Ta5d6ff"</style>"Tb4b4b4, Te6edf3tagEnd Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3closeIdx Tff7b72< T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3out Tff7b72+= Te6edf3htmlTb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3iTb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Te6edf3out Tff7b72+= Te6edf3htmlTb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3iTb4b4b4, Te6edf3tagEnd Tff7b72+ T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3out Tff7b72+= Te6edf3MicronParserTb4b4b4.Te6edf3scrubNetworkCssTb4b4b4(Te6edf3htmlTb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3tagEnd Tff7b72+ T79c0ff1Tb4b4b4, Te6edf3closeIdxTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3out Tff7b72+= Te6edf3htmlTb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3closeIdxTb4b4b4, Te6edf3closeIdx Tff7b72+ Ta5d6ff"</style>"Tb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4;
Te6edf3i Tff7b72= Te6edf3closeIdx Tff7b72+ Ta5d6ff"</style>"Tb4b4b4.Te6edf3lengthTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3outTb4b4b4;
Tb4b4b4}
T8b949e/**
* Split Micron source into blocks for WASM conversion, keeping MeshChat partial-include lines on the JS path.
*/
Tff7b72static Te6edf3splitMicronMarkupWasmSegmentsTb4b4b4(Te6edf3markupTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3markup Tff7b72== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3lines Tff7b72= Tffa657StringTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"\n"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3segments Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72let Te6edf3buf Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3line Tff7b72of Te6edf3linesTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3trimmed Tff7b72= Te6edf3lineTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3PARTIAL_LINE_REGEXTb4b4b4.Te6edf3testTb4b4b4(Te6edf3trimmedTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3bufTb4b4b4.Te6edf3lengthTb4b4b4) Tb4b4b4{
Te6edf3segmentsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"mu"Tb4b4b4, Te6edf3textTff7b72: Te6edf3bufTb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff"\n"Tb4b4b4) Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3buf Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}
Te6edf3segmentsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"partial"Tb4b4b4, Te6edf3line Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3bufTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3lineTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3bufTb4b4b4.Te6edf3lengthTb4b4b4) Tb4b4b4{
Te6edf3segmentsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"mu"Tb4b4b4, Te6edf3textTff7b72: Te6edf3bufTb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff"\n"Tb4b4b4) Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3segmentsTb4b4b4;
Tb4b4b4}
Te6edf3injectMonospaceStylesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tffa657documentTb4b4b4.Te6edf3getElementByIdTb4b4b4(Ta5d6ff"micron-monospace-styles"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3styleEl Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"style"Tb4b4b4)Tb4b4b4;
Te6edf3styleElTb4b4b4.Te6edf3id Tff7b72= Ta5d6ff"micron-monospace-styles"Tb4b4b4;
Te6edf3styleElTb4b4b4.Te6edf3textContent Tff7b72= Ta5d6ff`
Ta5d6ff .Mu-nl {
cursor: pointer;
}
.Mu-mnt {
display: inline-block;
box-sizing: border-box;
min-width: 1ch;
width: 1ch;
max-width: 1ch;
text-align: center;
white-space: pre;
text-decoration: inherit;
vertical-align: baseline;
line-height: 1.25;
}
.Mu-mnt-full {
display: inline-block;
box-sizing: border-box;
min-width: 2ch;
width: 2ch;
max-width: 2ch;
text-align: center;
white-space: pre;
text-decoration: inherit;
vertical-align: baseline;
line-height: 1.25;
}
.Mu-mws {
text-decoration: inherit;
display: inline-flex;
flex-wrap: wrap;
align-items: baseline;
column-gap: 0;
row-gap: 0;
gap: 0;
}
.Mu-mnt-group {
display: inline;
font-family: inherit;
white-space: pre-wrap;
overflow-wrap: anywhere;
word-break: break-word;
text-decoration: inherit;
vertical-align: baseline;
line-height: 1.25;
}
Ta5d6ff`Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3headTb4b4b4.Te6edf3appendChildTb4b4b4(Te6edf3styleElTb4b4b4)Tb4b4b4;
Te6edf3MicronParserTb4b4b4.Te6edf3installMicronCopyFixTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e/**
* Browsers insert newlines between adjacent inline-block Mu-mnt cells
* when copying. Rebuild clipboard text without those spurious breaks while
* keeping intentional block-level line breaks.
*/
Tff7b72static Te6edf3installMicronCopyFixTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Tffa657document Tff7b72=== Ta5d6ff"undefined" Tff7b72|| Tffa657windowTb4b4b4.Te6edf3__meshchatxMicronCopyFixTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tffa657windowTb4b4b4.Te6edf3__meshchatxMicronCopyFix Tff7b72= Tff7b72trueTb4b4b4;
Tffa657documentTb4b4b4.Te6edf3addEventListenerTb4b4b4(Ta5d6ff"copy"Tb4b4b4, Tb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3sel Tff7b72= Tffa657windowTb4b4b4.Te6edf3getSelectionTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3sel Tff7b72|| Te6edf3selTb4b4b4.Te6edf3isCollapsed Tff7b72|| Tff7b72!Te6edf3selTb4b4b4.Te6edf3rangeCountTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3anchor Tff7b72= Te6edf3selTb4b4b4.Te6edf3anchorNodeTb4b4b4;
Tff7b72const Te6edf3focus Tff7b72= Te6edf3selTb4b4b4.Te6edf3focusNodeTb4b4b4;
Tff7b72const Te6edf3anchorEl Tff7b72= Te6edf3anchor Tff7b72&& Te6edf3anchorTb4b4b4.Te6edf3nodeType Tff7b72=== Te6edf3NodeTb4b4b4.Te6edf3ELEMENT_NODE Tff7b72? Te6edf3anchor Tff7b72: Te6edf3anchorTff7b72?Tb4b4b4.Te6edf3parentElementTb4b4b4;
Tff7b72const Te6edf3focusEl Tff7b72= Te6edf3focus Tff7b72&& Te6edf3focusTb4b4b4.Te6edf3nodeType Tff7b72=== Te6edf3NodeTb4b4b4.Te6edf3ELEMENT_NODE Tff7b72? Te6edf3focus Tff7b72: Te6edf3focusTff7b72?Tb4b4b4.Te6edf3parentElementTb4b4b4;
Tff7b72const Te6edf3inMicron Tff7b72= Tb4b4b4(Te6edf3elTb4b4b4) Tb4b4b4=> Tffa657BooleanTb4b4b4(Te6edf3elTff7b72?Tb4b4b4.Te6edf3closestTff7b72?Tb4b4b4.Tb4b4b4(Ta5d6ff".Mu-mws, .Mu-mnt, .Mu-mnt-full, .Mu-mnt-group, .Mu-nl"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3inMicronTb4b4b4(Te6edf3anchorElTb4b4b4) Tff7b72&& Tff7b72!Te6edf3inMicronTb4b4b4(Te6edf3focusElTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3range Tff7b72= Te6edf3selTb4b4b4.Te6edf3getRangeAtTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3fragment Tff7b72= Te6edf3rangeTb4b4b4.Te6edf3cloneContentsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3walker Tff7b72= Tffa657documentTb4b4b4.Te6edf3createTreeWalkerTb4b4b4(Te6edf3fragmentTb4b4b4, Te6edf3NodeFilterTb4b4b4.Te6edf3SHOW_ALLTb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3out Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72let Te6edf3node Tff7b72= Te6edf3walkerTb4b4b4.Te6edf3nextNodeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72while Tb4b4b4(Te6edf3nodeTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3nodeType Tff7b72=== Te6edf3NodeTb4b4b4.Te6edf3TEXT_NODETb4b4b4) Tb4b4b4{
Te6edf3out Tff7b72+= Te6edf3nodeTb4b4b4.Te6edf3nodeValue Tff7b72|| Ta5d6ff""Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3nodeType Tff7b72=== Te6edf3NodeTb4b4b4.Te6edf3ELEMENT_NODETb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3tag Tff7b72= Te6edf3nodeTb4b4b4.Te6edf3tagNameTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3tag Tff7b72=== Ta5d6ff"BR" Tff7b72|| Te6edf3tag Tff7b72=== Ta5d6ff"DIV" Tff7b72|| Te6edf3tag Tff7b72=== Ta5d6ff"P" Tff7b72|| Te6edf3tag Tff7b72=== Ta5d6ff"PRE"Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3outTb4b4b4.Te6edf3length Tff7b72&& Tff7b72!Te6edf3outTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff"\n"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3out Tff7b72+= Ta5d6ff"\n"Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Te6edf3node Tff7b72= Te6edf3walkerTb4b4b4.Te6edf3nextNodeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e// Collapse newlines that came only from adjacent inline-block cells.
Tff7b72const Te6edf3cleaned Tff7b72= Te6edf3outTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/([^\n])\n(?!\n)/gTb4b4b4, Ta5d6ff"$1"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3cleaned Tff7b72&& Te6edf3eventTb4b4b4.Te6edf3clipboardDataTb4b4b4) Tb4b4b4{
Te6edf3eventTb4b4b4.Te6edf3clipboardDataTb4b4b4.Te6edf3setDataTb4b4b4(Ta5d6ff"text/plain"Tb4b4b4, Te6edf3cleanedTb4b4b4)Tb4b4b4;
Te6edf3eventTb4b4b4.Te6edf3preventDefaultTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e/* leave default copy behaviour */
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3convertMicronToHtmlWasmHybridTb4b4b4(Te6edf3markupTb4b4b4, Te6edf3partialContents Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3mc Tff7b72= Tffa657globalThisTb4b4b4.Te6edf3micronConvertTb4b4b4;
Tff7b72const Te6edf3segments Tff7b72= Te6edf3MicronParserTb4b4b4.Te6edf3splitMicronMarkupWasmSegmentsTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3html Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3seg Tff7b72of Te6edf3segmentsTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3segTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"mu"Tb4b4b4) Tb4b4b4{
Te6edf3html Tff7b72+= Te6edf3MicronParserTb4b4b4.Te6edf3sanitizeRenderedMicronHtmlTb4b4b4(
Te6edf3mcTb4b4b4(Te6edf3segTb4b4b4.Te6edf3textTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3darkThemeTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3enableForceMonospaceTb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3html Tff7b72+= Tff7b72thisTb4b4b4.Te6edf3_convertMicronToHtmlJsTb4b4b4(Te6edf3segTb4b4b4.Te6edf3line Tff7b72+ Ta5d6ff"\n"Tb4b4b4, Te6edf3partialContentsTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3htmlTb4b4b4;
Tb4b4b4}
Te6edf3_convertMicronToHtmlJsTb4b4b4(Te6edf3markupTb4b4b4, Te6edf3partialContents Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3build Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72let Te6edf3html Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72let Te6edf3headerColors Tff7b72= Tb4b4b4{ Te6edf3fgTff7b72: Tff7b72nullTb4b4b4, Te6edf3bgTff7b72: Tff7b72null Tb4b4b4}Tb4b4b4;
Tff7b72try Tb4b4b4{
Te6edf3headerColors Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseHeaderTagsTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3warnTb4b4b4(Ta5d6ff"MicronParser: parseHeaderTags failed"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3plainStyle Tff7b72= Tff7b72thisTb4b4b4.Te6edf3SELECTED_STYLESTff7b72?Tb4b4b4.Te6edf3plain Tff7b72|| Tb4b4b4{ Te6edf3fgTff7b72: Tff7b72thisTb4b4b4.Te6edf3DEFAULT_FG_DARKTb4b4b4, Te6edf3bgTff7b72: Tff7b72thisTb4b4b4.Te6edf3DEFAULT_BG Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3defaultFg Tff7b72= Te6edf3headerColorsTb4b4b4.Te6edf3fg Tff7b72|| Te6edf3plainStyleTb4b4b4.Te6edf3fgTb4b4b4;
Tff7b72const Te6edf3defaultBg Tff7b72= Te6edf3headerColorsTb4b4b4.Te6edf3bg Tff7b72|| Te6edf3plainStyleTb4b4b4.Te6edf3bgTb4b4b4;
Tff7b72let Te6edf3state Tff7b72= Tb4b4b4{
Te6edf3literalTff7b72: Tff7b72falseTb4b4b4,
Te6edf3depthTff7b72: T79c0ff0Tb4b4b4,
Te6edf3fg_colorTff7b72: Te6edf3defaultFgTb4b4b4,
Te6edf3bg_colorTff7b72: Te6edf3defaultBgTb4b4b4,
Te6edf3formattingTff7b72: Tb4b4b4{
Te6edf3boldTff7b72: Tff7b72falseTb4b4b4,
Te6edf3underlineTff7b72: Tff7b72falseTb4b4b4,
Te6edf3italicTff7b72: Tff7b72falseTb4b4b4,
Te6edf3strikethroughTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3default_alignTff7b72: Ta5d6ff"left"Tb4b4b4,
Te6edf3alignTff7b72: Ta5d6ff"left"Tb4b4b4,
Te6edf3default_fgTff7b72: Te6edf3defaultFgTb4b4b4,
Te6edf3default_bgTff7b72: Te6edf3defaultBgTb4b4b4,
Te6edf3radio_groupsTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3partialIndexTff7b72: T79c0ff0Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3lines Tff7b72= Te6edf3markupTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"\n"Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3line Tff7b72of Te6edf3linesTb4b4b4) Tb4b4b4{
Tff7b72let Te6edf3lineOutputTb4b4b4;
Tff7b72try Tb4b4b4{
Te6edf3lineOutput Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseLineTb4b4b4(Te6edf3lineTb4b4b4, Te6edf3stateTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3warnTb4b4b4(Ta5d6ff"MicronParser: parseLine failed"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3html Tff7b72+= Ta5d6ff`Ta5d6ff<span class="mu-line-parse-fallback" style="white-space:pre-wrap">Tffd700${Te6edf3escapeHtmlForFallbackTb4b4b4(Te6edf3lineTb4b4b4)Tffd700}Ta5d6ff</span><br>Ta5d6ff`Tb4b4b4;
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lineOutput Tff7b72&& Te6edf3lineOutputTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3el Tff7b72of Te6edf3lineOutputTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3elTb4b4b4.Te6edf3classList Tff7b72&& Te6edf3elTb4b4b4.Te6edf3classListTb4b4b4.Te6edf3containsTb4b4b4(Ta5d6ff"mu-partial"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3id Tff7b72= Te6edf3elTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"data-partial-id"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3id Tff7b72&& Te6edf3partialContentsTb4b4b4[Te6edf3idTb4b4b4]Tb4b4b4) Tb4b4b4{
Te6edf3html Tff7b72+= Te6edf3partialContentsTb4b4b4[Te6edf3idTb4b4b4]Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3html Tff7b72+= Te6edf3elTb4b4b4.Te6edf3outerHTMLTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3html Tff7b72+= Te6edf3elTb4b4b4.Te6edf3outerHTMLTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3warnTb4b4b4(Ta5d6ff"MicronParser: line output serialization failed"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3html Tff7b72+= Ta5d6ff`Ta5d6ff<span class="mu-line-parse-fallback" style="white-space:pre-wrap">Tffd700${Te6edf3escapeHtmlForFallbackTb4b4b4(Te6edf3lineTb4b4b4)Tffd700}Ta5d6ff</span><br>Ta5d6ff`Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3lineOutput Tff7b72&& Te6edf3lineOutputTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
T8b949e// skip
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3html Tff7b72+= Ta5d6ff"<br>"Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3MicronParserTb4b4b4.Te6edf3sanitizeRenderedMicronHtmlTb4b4b4(Te6edf3htmlTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72return Te6edf3buildTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3warnTb4b4b4(Ta5d6ff"MicronParser: convertMicronToHtml failed"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3escaped Tff7b72= Te6edf3escapeHtmlForFallbackTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72return Te6edf3DOMPurifyTb4b4b4.Te6edf3sanitizeTb4b4b4(
Ta5d6ff`Ta5d6ff<pre class="mu-parse-fallback" style="white-space:pre-wrap">Tffd700${Te6edf3escapedTffd700}Ta5d6ff</pre>Ta5d6ff`Tb4b4b4,
Tb4b4b4{
Te6edf3USE_PROFILESTff7b72: Tb4b4b4{ Te6edf3htmlTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4,
Te6edf3ALLOWED_URI_REGEXPTb4b4b4,
Tb4b4b4}
Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72return Ta5d6ff`Ta5d6ff<pre class="mu-parse-fallback" style="white-space:pre-wrap">Tffd700${Te6edf3escapedTffd700}Ta5d6ff</pre>Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Te6edf3convertMicronToHtmlTb4b4b4(Te6edf3markupTb4b4b4, Te6edf3partialContents Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4, Te6edf3options Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3markup Tff7b72== Tff7b72nullTb4b4b4) Tff7b72return Ta5d6ff""Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3markup Tff7b72!== Ta5d6ff"string"Tb4b4b4) Te6edf3markup Tff7b72= Tffa657StringTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wantWasm Tff7b72= Te6edf3optionsTb4b4b4.Te6edf3useWasm Tff7b72=== Tff7b72true Tff7b72&& Tff7b72typeof Tffa657globalThisTb4b4b4.Te6edf3micronConvert Tff7b72=== Ta5d6ff"function"Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3wantWasmTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3convertMicronToHtmlWasmHybridTb4b4b4(Te6edf3markupTb4b4b4, Te6edf3partialContentsTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3warnTb4b4b4(Ta5d6ff"MicronParser: WASM Micron conversion failed, using JS parser"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3_convertMicronToHtmlJsTb4b4b4(Te6edf3markupTb4b4b4, Te6edf3partialContentsTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3convertMicronToFragmentTb4b4b4(Te6edf3markupTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3markup Tff7b72== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Tffa657documentTb4b4b4.Te6edf3createDocumentFragmentTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3markup Tff7b72!== Ta5d6ff"string"Tb4b4b4) Te6edf3markup Tff7b72= Tffa657StringTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3fragment Tff7b72= Tffa657documentTb4b4b4.Te6edf3createDocumentFragmentTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3headerColors Tff7b72= Tb4b4b4{ Te6edf3fgTff7b72: Tff7b72nullTb4b4b4, Te6edf3bgTff7b72: Tff7b72null Tb4b4b4}Tb4b4b4;
Tff7b72try Tb4b4b4{
Te6edf3headerColors Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseHeaderTagsTb4b4b4(Te6edf3markupTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3warnTb4b4b4(Ta5d6ff"MicronParser: parseHeaderTags failed"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3plainStyle Tff7b72= Tff7b72thisTb4b4b4.Te6edf3SELECTED_STYLESTff7b72?Tb4b4b4.Te6edf3plain Tff7b72|| Tb4b4b4{ Te6edf3fgTff7b72: Tff7b72thisTb4b4b4.Te6edf3DEFAULT_FG_DARKTb4b4b4, Te6edf3bgTff7b72: Tff7b72thisTb4b4b4.Te6edf3DEFAULT_BG Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3defaultFg Tff7b72= Te6edf3headerColorsTb4b4b4.Te6edf3fg Tff7b72|| Te6edf3plainStyleTb4b4b4.Te6edf3fgTb4b4b4;
Tff7b72const Te6edf3defaultBg Tff7b72= Te6edf3headerColorsTb4b4b4.Te6edf3bg Tff7b72|| Te6edf3plainStyleTb4b4b4.Te6edf3bgTb4b4b4;
Tff7b72let Te6edf3state Tff7b72= Tb4b4b4{
Te6edf3literalTff7b72: Tff7b72falseTb4b4b4,
Te6edf3depthTff7b72: T79c0ff0Tb4b4b4,
Te6edf3fg_colorTff7b72: Te6edf3defaultFgTb4b4b4,
Te6edf3bg_colorTff7b72: Te6edf3defaultBgTb4b4b4,
Te6edf3formattingTff7b72: Tb4b4b4{
Te6edf3boldTff7b72: Tff7b72falseTb4b4b4,
Te6edf3underlineTff7b72: Tff7b72falseTb4b4b4,
Te6edf3italicTff7b72: Tff7b72falseTb4b4b4,
Te6edf3strikethroughTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3default_alignTff7b72: Ta5d6ff"left"Tb4b4b4,
Te6edf3alignTff7b72: Ta5d6ff"left"Tb4b4b4,
Te6edf3default_fgTff7b72: Te6edf3defaultFgTb4b4b4,
Te6edf3default_bgTff7b72: Te6edf3defaultBgTb4b4b4,
Te6edf3radio_groupsTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3partialIndexTff7b72: T79c0ff0Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3lines Tff7b72= Te6edf3markupTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"\n"Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3line Tff7b72of Te6edf3linesTb4b4b4) Tb4b4b4{
Tff7b72let Te6edf3sanitizedLine Tff7b72= Te6edf3lineTb4b4b4;
Tff7b72try Tb4b4b4{
Te6edf3sanitizedLine Tff7b72= Te6edf3DOMPurifyTb4b4b4.Te6edf3sanitizeTb4b4b4(Te6edf3lineTb4b4b4, Tb4b4b4{
Te6edf3USE_PROFILESTff7b72: Tb4b4b4{ Te6edf3htmlTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4,
Te6edf3ALLOWED_URI_REGEXPTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3warnTb4b4b4(Ta5d6ff"MicronParser: line sanitize failed"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3lineOutputTb4b4b4;
Tff7b72try Tb4b4b4{
Te6edf3lineOutput Tff7b72= Tff7b72thisTb4b4b4.Te6edf3parseLineTb4b4b4(Te6edf3sanitizedLineTb4b4b4, Te6edf3stateTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3warnTb4b4b4(Ta5d6ff"MicronParser: parseLine failed"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3fallback Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"span"Tb4b4b4)Tb4b4b4;
Te6edf3fallbackTb4b4b4.Te6edf3className Tff7b72= Ta5d6ff"mu-line-parse-fallback"Tb4b4b4;
Te6edf3fallbackTb4b4b4.Te6edf3styleTb4b4b4.Te6edf3whiteSpace Tff7b72= Ta5d6ff"pre-wrap"Tb4b4b4;
Te6edf3fallbackTb4b4b4.Te6edf3textContent Tff7b72= Te6edf3lineTb4b4b4;
Te6edf3fragmentTb4b4b4.Te6edf3appendChildTb4b4b4(Te6edf3fallbackTb4b4b4)Tb4b4b4;
Te6edf3fragmentTb4b4b4.Te6edf3appendChildTb4b4b4(Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"br"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lineOutput Tff7b72&& Te6edf3lineOutputTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3el Tff7b72of Te6edf3lineOutputTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Te6edf3fragmentTb4b4b4.Te6edf3appendChildTb4b4b4(Te6edf3elTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3warnTb4b4b4(Ta5d6ff"MicronParser: appendChild failed"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3fallback Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"span"Tb4b4b4)Tb4b4b4;
Te6edf3fallbackTb4b4b4.Te6edf3className Tff7b72= Ta5d6ff"mu-line-parse-fallback"Tb4b4b4;
Te6edf3fallbackTb4b4b4.Te6edf3styleTb4b4b4.Te6edf3whiteSpace Tff7b72= Ta5d6ff"pre-wrap"Tb4b4b4;
Te6edf3fallbackTb4b4b4.Te6edf3textContent Tff7b72= Te6edf3lineTb4b4b4;
Te6edf3fragmentTb4b4b4.Te6edf3appendChildTb4b4b4(Te6edf3fallbackTb4b4b4)Tb4b4b4;
Te6edf3fragmentTb4b4b4.Te6edf3appendChildTb4b4b4(Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"br"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3lineOutput Tff7b72&& Te6edf3lineOutputTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
T8b949e// skip
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3fragmentTb4b4b4.Te6edf3appendChildTb4b4b4(Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"br"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3fragmentTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3warnTb4b4b4(Ta5d6ff"MicronParser: convertMicronToFragment failed"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3fragment Tff7b72= Tffa657documentTb4b4b4.Te6edf3createDocumentFragmentTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3pre Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"pre"Tb4b4b4)Tb4b4b4;
Te6edf3preTb4b4b4.Te6edf3className Tff7b72= Ta5d6ff"mu-parse-fallback"Tb4b4b4;
Te6edf3preTb4b4b4.Te6edf3styleTb4b4b4.Te6edf3whiteSpace Tff7b72= Ta5d6ff"pre-wrap"Tb4b4b4;
Te6edf3preTb4b4b4.Te6edf3textContent Tff7b72= Te6edf3markupTb4b4b4;
Te6edf3fragmentTb4b4b4.Te6edf3appendChildTb4b4b4(Te6edf3preTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3fragmentTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Te6edf3parseLineTb4b4b4(Te6edf3lineTb4b4b4, Te6edf3stateTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3lineTb4b4b4.Te6edf3length Tff7b72> T79c0ff0 Tff7b72&& Tff7b72!Te6edf3stateTb4b4b4.Te6edf3literalTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3partialMatch Tff7b72= Te6edf3lineTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3matchTb4b4b4(Te6edf3MicronParserTb4b4b4.Te6edf3PARTIAL_LINE_REGEXTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3partialMatchTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3dest Tff7b72= Te6edf3partialMatchTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3path Tff7b72= Te6edf3partialMatchTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3refresh Tff7b72= Te6edf3partialMatchTb4b4b4[T79c0ff3Tb4b4b4] Tff7b72? Tffa657parseIntTb4b4b4(Te6edf3partialMatchTb4b4b4[T79c0ff3Tb4b4b4]Tb4b4b4, T79c0ff10Tb4b4b4) Tff7b72: Tff7b72nullTb4b4b4;
Tff7b72const Te6edf3fields Tff7b72= Te6edf3partialMatchTb4b4b4[T79c0ff4Tb4b4b4] Tff7b72|| Tff7b72nullTb4b4b4;
Tff7b72const Te6edf3id Tff7b72= Ta5d6ff"partial-" Tff7b72+ Te6edf3stateTb4b4b4.Te6edf3partialIndexTff7b72++Tb4b4b4;
Tff7b72const Te6edf3div Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"div"Tb4b4b4)Tb4b4b4;
Te6edf3divTb4b4b4.Te6edf3className Tff7b72= Ta5d6ff"mu-partial"Tb4b4b4;
Te6edf3divTb4b4b4.Te6edf3setAttributeTb4b4b4(Ta5d6ff"data-partial-id"Tb4b4b4, Te6edf3idTb4b4b4)Tb4b4b4;
Te6edf3divTb4b4b4.Te6edf3setAttributeTb4b4b4(Ta5d6ff"data-dest"Tb4b4b4, Te6edf3destTb4b4b4)Tb4b4b4;
Te6edf3divTb4b4b4.Te6edf3setAttributeTb4b4b4(Ta5d6ff"data-path"Tb4b4b4, Te6edf3pathTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3refresh Tff7b72!= Tff7b72null Tff7b72&& Te6edf3refresh Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3divTb4b4b4.Te6edf3setAttributeTb4b4b4(Ta5d6ff"data-refresh"Tb4b4b4, Tffa657StringTb4b4b4(Te6edf3refreshTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3fieldsTb4b4b4) Tb4b4b4{
Te6edf3divTb4b4b4.Te6edf3setAttributeTb4b4b4(Ta5d6ff"data-fields"Tb4b4b4, Te6edf3fieldsTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3divTb4b4b4.Te6edf3textContent Tff7b72= Ta5d6ff"Loading..."Tb4b4b4;
Tff7b72return Tb4b4b4[Te6edf3divTb4b4b4]Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Tff7b72superTb4b4b4.Te6edf3parseLineTb4b4b4(Te6edf3lineTb4b4b4, Te6edf3stateTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3wrapWordTb4b4b4(Te6edf3wordTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3wordTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tff7b72return Ta5d6ff""Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3MicronParserTb4b4b4.Te6edf3lineNeedsPerCharCellsTb4b4b4(Te6edf3wordTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"<span class='Mu-mnt-group'>" Tff7b72+ Te6edf3escapeHtmlForFallbackTb4b4b4(Te6edf3wordTb4b4b4) Tff7b72+ Ta5d6ff"</span>"Tb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3out Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72let Te6edf3charArrTb4b4b4;
Tff7b72try Tb4b4b4{
Te6edf3charArr Tff7b72= Tb4b4b4[Tb4b4b4...Tff7b72new Tffa657IntlTb4b4b4.Te6edf3SegmenterTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3segmentTb4b4b4(Te6edf3wordTb4b4b4)Tb4b4b4]Tb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3xTb4b4b4) Tb4b4b4=> Te6edf3xTb4b4b4.Te6edf3segmentTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72try Tb4b4b4{
Te6edf3charArr Tff7b72= Tffa657ArrayTb4b4b4.Tff7b72fromTb4b4b4(Te6edf3wordTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3charArr Tff7b72= Te6edf3wordTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72for Tb4b4b4(Tff7b72let Tff7b72char Tff7b72of Te6edf3charArrTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3cellClass Tff7b72= Te6edf3MicronParserTb4b4b4.Te6edf3isWideMonospaceCellTb4b4b4(Tff7b72charTb4b4b4) Tff7b72? Ta5d6ff"Mu-mnt-full" Tff7b72: Ta5d6ff"Mu-mnt"Tb4b4b4;
Te6edf3out Tff7b72+= Ta5d6ff"<span class='" Tff7b72+ Te6edf3cellClass Tff7b72+ Ta5d6ff"'>" Tff7b72+ Te6edf3escapeHtmlForFallbackTb4b4b4(Tff7b72charTb4b4b4) Tff7b72+ Ta5d6ff"</span>"Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff"<span class='Mu-mws'>" Tff7b72+ Te6edf3out Tff7b72+ Ta5d6ff"</span>"Tb4b4b4;
Tb4b4b4}
Te6edf3splitAtSpacesTb4b4b4(Te6edf3lineTb4b4b4) Tb4b4b4{
Tff7b72let Te6edf3out Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72const Te6edf3wordArr Tff7b72= Te6edf3lineTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff/(?<= )/gTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3word Tff7b72of Te6edf3wordArrTb4b4b4) Tb4b4b4{
Te6edf3out Tff7b72+= Tff7b72thisTb4b4b4.Te6edf3wrapWordTb4b4b4(Te6edf3wordTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3outTb4b4b4;
Tb4b4b4}
Te6edf3forceMonospaceTb4b4b4(Te6edf3lineTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3line Tff7b72== Tff7b72null Tff7b72|| Te6edf3line Tff7b72=== Ta5d6ff""Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3MicronParserTb4b4b4.Te6edf3lineNeedsPerCharCellsTb4b4b4(Te6edf3lineTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"<span class='Mu-mnt-group'>" Tff7b72+ Te6edf3escapeHtmlForFallbackTb4b4b4(Te6edf3lineTb4b4b4) Tff7b72+ Ta5d6ff"</span>"Tb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3out Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72let Te6edf3charArrTb4b4b4;
Tff7b72try Tb4b4b4{
Te6edf3charArr Tff7b72= Tb4b4b4[Tb4b4b4...Tff7b72new Tffa657IntlTb4b4b4.Te6edf3SegmenterTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3segmentTb4b4b4(Te6edf3lineTb4b4b4)Tb4b4b4]Tb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3xTb4b4b4) Tb4b4b4=> Te6edf3xTb4b4b4.Te6edf3segmentTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72try Tb4b4b4{
Te6edf3charArr Tff7b72= Tffa657ArrayTb4b4b4.Tff7b72fromTb4b4b4(Te6edf3lineTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3charArr Tff7b72= Te6edf3lineTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72for Tb4b4b4(Tff7b72let Tff7b72char Tff7b72of Te6edf3charArrTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3cellClass Tff7b72= Te6edf3MicronParserTb4b4b4.Te6edf3isWideMonospaceCellTb4b4b4(Tff7b72charTb4b4b4) Tff7b72? Ta5d6ff"Mu-mnt-full" Tff7b72: Ta5d6ff"Mu-mnt"Tb4b4b4;
Te6edf3out Tff7b72+= Ta5d6ff"<span class='" Tff7b72+ Te6edf3cellClass Tff7b72+ Ta5d6ff"'>" Tff7b72+ Te6edf3escapeHtmlForFallbackTb4b4b4(Tff7b72charTb4b4b4) Tff7b72+ Ta5d6ff"</span>"Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3outTb4b4b4;
Tb4b4b4}
Tb4b4b4}
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────